home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- * DCmain.c: DC_View for SX-Window Ver 1.66 1997.05.23 f.ogasawara
- ******************************************************************************
- *
- *
- */
- #include <zmusic.h>
- #include <sxdef2.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <io.h>
- #include <jfctype.h>
- #include <doslib.h>
- #include <event.h> /* イベントマンを利用するときに必要 */
- #include <sxgraph.h> /* グラフ系マネージャを利用するときに必要 */
- #include <window.h> /* ウィンドウマンを利用するときに必要 */
- #include <dialog.h> /* ダイアログマンを利用するときに必要 */
- #include <control.h> /* コントロールマンを利用するときに必要 */
- #include <task.h> /* タスクマンを利用するときに必要 */
- #include "DC.h" /* このプログラム固有のヘッダファイル */
-
- char _sxkernelcomm[] = SXKERNEL; /* カーネル起動コマンド */
-
- /******************************************************************************
- * main(): メイン関数
- ******************************************************************************
- */
- int main(void)
- {
- ComVal cv; /* 共通変数 */
-
- if (!init(&cv)) { /* 初期化処理を行う */
- showErrDialog(&cv); /* エラーダイアログを表示する */
- cv.endFlag = TRUE; /* 終了フラグをセットする */
- }
- /* 終了フラグがセットされるまでループする */
- while (!cv.endFlag) {
- cv.errorCode = 0; /* エラーコードをクリアする */
- /* タスクマンからイベントを取得する */
- TSEventAvail(cv.eventMask, &cv.event);
- /* 各イベントに対応した処理を行う */
- switch (cv.event.ts.what) {
- case E_MSLDOWN: /* マウスレフトダウンイベント */
- msLDownEvent(&cv);
- break;
- case E_MSRDOWN: /* マウスライトダウンイベント */
- msRDownEvent(&cv);
- break;
- case E_IDLE: /* アイドルイベント */
- IdleEvent(&cv);
- break;
- case E_KEYDOWN: /* キーダウンイベント */
- keyDownEvent(&cv);
- break;
- case E_UPDATE: /* アップデートイベント */
- updateEvent(&cv);
- break;
- case E_ACTIVATE: /* アクティベートイベント */
- activateEvent(&cv);
- break;
- case E_SYSTEM1: /* システムイベント */
- case E_SYSTEM2:
- systemEvent(&cv);
- break;
- }
- if (cv.errorCode != 0) { /* エラーが発生したか? */
- showErrDialog(&cv); /* エラーダイアログを表示する */
- break;
- }
- }
- /* 終了手続きを行う */
- endProc(((cv.errorCode == 0) ? EXIT_SUCCESS : EXIT_FAILURE), &cv);
-
- return 0;
- }
-
- /******************************************************************************
- * init(): 初期化処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 戻り値: BOOLEAN = TRUE: 初期化成功
- * = FALSE: 初期化失敗(終了)
- * 注釈: 共通変数の初期化、アボート処理関数の登録、ウィンドウの作成と
- * 表示などを行う。
- */
- BOOLEAN init(ComVal *pcv)
- {
- int i,j,ret,ofsetc;
- char name[90];
-
- pcv->windowPtr = NULL; /* ウィンドウポインタ */
- pcv->activeFlag = FALSE; /* アクティブフラグ */
- pcv->eventMask = EVENTMASK; /* イベントマスク */
- pcv->errorCode = 0; /* エラーコード */
- pcv->endFlag = FALSE; /* 終了フラグ */
- pcv->hResMap = NULL; /* リソースマップのハンドル */
- pcv->resOk = 0;
- pcv->menuHdl = NULL; /* メニューハンドル */
- pcv->menuHdl2 = NULL; /* メニューハンドル */
-
- pcv->updateRgnHdl = NULL; /* テキスト表示 */
- pcv->txtRgnHdl = NULL;
- pcv->winRgnHdl = NULL;
- pcv->txt = NULL;
- pcv->txtNo = NULL;
- pcv->ofset = 0;
- pcv->scrollFlag = 0;
- pcv->scrollDir = 0;
-
- pcv->pastFno = 0;
-
- pcv->pre_esc = 0; /* テキスト処理 */
- pcv->loadFlag = 0;
- pcv->mloadFlag = 0;
- pcv->currentPath[0] = 0;
- pcv->currentFname[0] = 0;
- strcpy(pcv->a_drv, "A:");
- strcpy(pcv->b_drv, "B:");
- strcpy(pcv->c_drv, "C:");
- pcv->fontK[0] = G_ROM12;
- pcv->fontK[1] = G_ROM16;
- pcv->fontS[0] = 12;
- pcv->fontS[1] = 16;
- pcv->fontL[0] = 16;
- pcv->fontL[1] = 24;
-
- /* cutfile load */
- for(i=0;i<MAX_DEPTH;i++)
- pcv->cutNo[i] = 1;
-
- pcv->txtRgnHdl = GMNewRgn();
- pcv->winRgnHdl = GMNewRgn();
-
- for(i=0;i<MAX_CUTS;i++) {
- for(j=0;j<MAX_DEPTH;j++) {
- pcv->bitsH[i][j] = NULL;
- pcv->offgraphOK[i][j] = 0;
- }
- }
-
- pcv->mojiFlag = 0; /* 文字列検索 */
- pcv->status = 0;
-
- strcpy(pcv->title, "DC_VIEW"); /* タイトル */
-
- pcv->set_as_a = 0;
- pcv->fore_color = 8;
- pcv->back_color = 11;
-
- TSSetAbort(endProc, (long) pcv); /* アボート処理関数を登録する */
-
- if (LOWWORD(SXVer()) < SXVER2) { /* SXシステムのバージョンを調べる */
- pcv->errorCode = 1; /* バージョン2より古い */
- return FALSE; /* 失敗したのでFALSEを返す */
- }
-
- if (!openResource(pcv)) { /* リソースファイルを読み込む */
- /* オープンできなかった */
- pcv->errorCode = 2; /* 作成できなかった */
- return FALSE; /* 失敗したのでFALSEを返す */
- }
- pcv->resOk = 1; /* 作成できた */
-
- pcv->menuHdl = TSReferMN(128); /* メニューハンドルの取得 */
- pcv->menuHdl2 = TSReferMN(129); /* メニューハンドルの取得 */
- (_Handle *) pcv->pcmHdl = TSRscGet('pram', 128); /* 環境読み込み*/
- (_Handle *) pcv->mzHdl = TSRscGet('pram', 129);
- (_Handle *) pcv->picHdl = TSRscGet('pram', 130);
- (_Handle *) pcv->envHdl = TSRscGet('pram', 131);
- (_Handle *) pcv->stsHdl = TSRscGet('pram', 132);
- (_Handle *) pcv->cpthHdl= TSRscGet('pram', 133);
- (_Handle *) pcv->dpthHdl= TSRscGet('pram', 134);
- (_Handle *) pcv->env2Hdl= TSRscGet('pram', 135);
-
- if (pcv->pcmHdl == NULL || pcv->mzHdl == NULL
- || pcv->picHdl == NULL || pcv->envHdl == NULL) {
- pcv->errorCode = 2; /* 作成できなかった */
- return FALSE; /* 失敗したのでFALSEを返す */
- }
-
- pcv->mzTask = **pcv->mzHdl; /* 起動プログラム */
- pcv->pcmTask = **pcv->pcmHdl;
- pcv->picTask = **pcv->picHdl;
-
- pcv->scrollstep = **pcv->envHdl;
- pcv->cutDisp = *((*pcv->envHdl) + 1);
- pcv->lineDisp = *((*pcv->envHdl) + 2);
- pcv->picOff = *((*pcv->envHdl) + 3);
- pcv->font = *((*pcv->envHdl) + 4);
- pcv->saveFlag = *((*pcv->envHdl) + 5);
-
- pcv->win_h = pcv->fontS[pcv->font] * 48; /*ウィンドウサイズ */
- pcv->win_v = 20 + pcv->fontS[pcv->font] * 30;
-
-
- pcv->fcache = *((*pcv->env2Hdl) + 3);
- pcv->fcache_c = pcv->fcache;
-
- for(i=0;i<MAX_DEPTH;i++) { /* ファイルキャッシュフラグ */
- pcv->fcache_d[i] = -1;
- pcv->txt_cache[i] = NULL;
- pcv->txtNo_cache[i] = NULL;
- }
- pcv->depth = 0;
-
- if (pcv->saveFlag) {
- pcv->ofset = *((*pcv->envHdl) + 18);
- ofsetc = pcv->ofset;
- pcv->pastFno = *((*pcv->envHdl) + 6);
- strcpy(pcv->a_drv, *pcv->dpthHdl);
- strcpy(pcv->b_drv, *pcv->dpthHdl + 90);
- strcpy(pcv->c_drv, *pcv->dpthHdl + 180);
- strcpy(pcv->title, *pcv->dpthHdl + 270);
- if (pcv->pastFno > 0) {
- strcpy(pcv->currentFname, *pcv->stsHdl);
- strcpy(name, pcv->currentFname);
- strcpy(pcv->currentPath, *pcv->cpthHdl);
- for(i=0;i<pcv->pastFno;i++) {
- pcv->pastofset[i] = *((*pcv->envHdl) + 7 + i);
- strcpy(&pcv->pastFname[i][0], (*pcv->stsHdl) + (i + 1) * 90);
- strcpy(&pcv->pastPath[i][0], (*pcv->cpthHdl) + (i + 1) * 90);
- }
- }
- pcv->normal = 0;
-
- *((*pcv->envHdl) + 5) = !pcv->saveFlag;
- TSResSave(pcv->lbFname);
- } else {
- pcv->normal = 1;
- }
-
- strcpy(pcv->mzFname, (*pcv->mzHdl) + 1);
- strcpy(pcv->mzOpt, (*pcv->mzHdl) + 91);
- strcpy(pcv->pcmFname, (*pcv->pcmHdl) + 1);
- strcpy(pcv->pcmOpt, (*pcv->pcmHdl) + 91);
- strcpy(pcv->picFname, (*pcv->picHdl) + 1);
- strcpy(pcv->picOpt, (*pcv->picHdl) + 91);
-
- if (!createWindow(pcv)) { /* ウィンドウを作成する */
- pcv->errorCode = 2; /* 作成できなかった */
- return FALSE; /* 失敗したのでFALSEを返す */
- }
-
- pcv->set_as_a = *((*pcv->env2Hdl) );
- pcv->fore_color = *((*pcv->env2Hdl) + 1);
- pcv->back_color = *((*pcv->env2Hdl) + 2);
-
- GMSetGraph(&pcv->windowPtr->graph); /* 自分をカレントグラフにする */
- GMAPage(G_PAGE0 | G_PAGE1 | G_PAGE2);
- GMBackColor(pcv->back_color);
- GMForeColor(pcv->fore_color);
- GMFontKind(G_ROM12);
- GMFontMode(G_PSET);
- GMPenMode(LONGWORD(G_BACK,G_PSET));
- GMFontFace(G_PLANE);
-
- if (!pcv->normal && pcv->fcache) {
- ret = 1;
- if (pcv->pastFno > 0) {
- for(i=0;i<pcv->pastFno;i++) {
- ret = GetData(pcv,pcv->pastFname[i]);
- if (!ret) break;
- }
- if (ret) {
- ret = GetData(pcv,name);
- pcv->ofset = ofsetc;
- }
- if (!ret) {
- pcv->normal = 1;
- for(i=0;i<MAX_DEPTH;i++) { /* ファイルキャッシュフラグ */
- pcv->fcache_d[i] = -1;
- pcv->txt_cache[i] = NULL;
- pcv->txtNo_cache[i] = NULL;
- }
- pcv->depth = 0;
- pcv->pastFno = 0;
- } else
- if (i>0) CMShine(pcv->btn12Hdl,C_ACTIVE);
- }
- }
-
- return TRUE; /* 成功したのでTRUEを返す */
- }
-
- /******************************************************************************
- * openResource(): リソースファイルのオープン
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 戻り値: BOOLEAN = TRUE: 読み込み成功
- * = FALSE: 読み込み失敗(終了)
- */
- BOOLEAN openResource(ComVal *pcv)
- {
- int errCode; /* エラーコード */
- Task tsbuf; /* タスク管理レコード */
- char drv[2], path[65], node[19], ext[5];
- char name[23], fileName[TS_NAMEMAX];
- char szFile[TS_NAMEMAX]; /* フルパスでファイル名が戻るバッファ */
- _Handle *versHdl;
-
- /* リソースファイルのオープン&読み込み */
- EMEnCross();
- /* タスク名を取得する */
- TSGetTdb(&tsbuf, TS_OWN);
- /* タスク名を分解 */
- strsfn(tsbuf.name, drv, path, node, ext);
- /* 検索パスを作成 */
- strmfn(szFile, drv, path, "", "");
- strcpy(pcv->myPath, szFile);
- /* リソースファイルを検索 */
- errCode = TSSearchFile("DC_VIEW.LB", szFile, szFile);
- strcpy(pcv->lbFname, szFile);
- if (errCode < 0) {
- EMDeCross();
- /* 待ち状態を示すマウスポインタを元に戻す */
- DMError(D_CONFIRM, "リソースファイル「DC_VIEW.LB」が\r"
- "見付かりません。");
- return FALSE;
- }
- /* リソースのオープン,リソースマップの獲得 */
- pcv->hResMap = TSResOpen(szFile);
- if (pcv->hResMap == NULL) {
- /* 待ち状態を示すマウスポインタを元に戻す */
- EMDeCross();
- DMError(D_CONFIRM, "リソースファイルが\r"
- "オープンできません。");
- return FALSE;
- }
- /* すべてのリソースを読み込む(ファイルはクローズされる)*/
- errCode = TSResLoad();
- if (errCode < 0) {
- /* 待ち状態を示すマウスポインタを元に戻す */
- EMDeCross();
- DMError(D_CONFIRM, "リソースファイルの読み込みに\r"
- "失敗しました。");
- return FALSE;
- }
-
- pcv->versHdl = TSRscGet('vers', 128); /* バージョン読み込み*/
- if ((pcv->versHdl == NULL) || strcmp(*pcv->versHdl, "1.66")) {
- EMDeCross();
- DMError(D_CONFIRM, "リソースファイルの\r"
- "バージョンが違います。");
- return FALSE;
- }
- EMDeCross();
- }
-
- /******************************************************************************
- * createWindow(): ウィンドウの作成
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 戻り値: BOOLEAN = TRUE: 作成成功
- * = FALSE: 作成失敗(終了)
- */
- BOOLEAN createWindow(ComVal *pcv)
- {
- int paramFlags; /* パラメータの有無 */
- Rect rc,rc2;
- Task task; /* タスク管理レコード */
- int ret,do_load = 0;
- char name[256];
-
- Rect winSize = { 0, 0, WIN_H, WIN_V }; /* ウィンドウサイズ*/
- Rect disp;
- Point top;
-
- winSize.d.right = pcv->win_h;
- winSize.d.bottom = pcv->win_v; /*ウィンドウサイズ */
-
- TSGetTdb(&task, TS_OWN); /* タスク管理レコードを取得する */
- paramFlags = TSTakeParam( /* コマンドラインを解析する */
- task.command, /* コマンドライン */
- &rc, /* 指定されたウィンドウ位置 */
- name, /* 最終文字列を格納する */
- 0, /* アドレステーブルを保存しない */
- NULL, /* アドレステーブルを作成しない */
- NULL); /* ポインタを確保しない */
- if (!(paramFlags & 1)) { /* ウィンドウ位置の指定があるか? */
- /* ない場合、システムからウィンドウの左上座標を取得する */
- rc = winSize;
- SXGetDispRect(&disp);
- top.p.x = (disp.d.right + disp.d.left) / 2 - rc.d.right / 2;
- top.p.y = (disp.d.bottom + disp.d.top) / 2 - rc.d.bottom / 2;
- if ((top.p.x - disp.d.left) < 0)
- top.p.x = 0;
- if ((top.p.y - disp.d.top ) < 11)
- top.p.y = 11 + disp.d.top;
- GMSlideRect(&rc, top.x_y);
- } else {
- rc2 = rc;
- rc = winSize;
- rc.d.top = rc.d.top + rc2.d.top;
- rc.d.right = rc.d.right + rc2.d.left ;
- rc.d.bottom = rc.d.bottom + rc2.d.top;
- rc.d.left = rc.d.left + rc2.d.left ;
- }
- pcv->windowPtr = WMOpen( /* ウィンドウをオープンする */
- NULL, /* ウィンドウポインタを確保する */
- &rc, /* ウィンドウの表示位置 */
- WINTITLE, /* ウィンドウタイトル */
- FALSE, /* オープン時に描画しない */
- WI_STD2 << 4, /* タイトルの広い標準ウィンドウ */
- W_FRONT, /* 一番手前に表示する */
- TRUE, /* クローズボタンを使用する */
- TSGetID()); /* 自分のタスクID */
- if (pcv->windowPtr == NULL)
- return FALSE; /* 失敗したのでFALSEを返す */
-
- structControl(pcv); /* コントロールの作成 */
-
- setWinSize(pcv);
- WMShow(pcv->windowPtr); /* ウィンドウを表示する */
- /* 文字列の指定があるか? */
- if ((paramFlags & 2)==2) {
- if (pcv->pastFno == 0)
- GetData(pcv, name);
- else if (pcv->normal || !pcv->fcache)
- GetData(pcv, name);
- }
-
- return TRUE; /* 成功したのでTRUEを返す */
- }
-
- /******************************************************************************
- * structControl(): コントロールの作成
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈:
- */
- void structControl(ComVal *pcv)
- {
- pcv->btn1Hdl =TSReferCM(128,pcv->windowPtr);
- pcv->btn2Hdl =TSReferCM(129,pcv->windowPtr);
- pcv->btn3Hdl =TSReferCM(130,pcv->windowPtr);
- pcv->btn4Hdl =TSReferCM(131,pcv->windowPtr);
- pcv->btn5Hdl =TSReferCM(132,pcv->windowPtr);
- pcv->btn6Hdl =TSReferCM(133,pcv->windowPtr);
- pcv->btn7Hdl =TSReferCM(134,pcv->windowPtr);
- pcv->btn8Hdl =TSReferCM(135,pcv->windowPtr);
- pcv->btn9Hdl =TSReferCM(136,pcv->windowPtr);
- pcv->btn92Hdl=TSReferCM(142,pcv->windowPtr);
- pcv->btn93Hdl=TSReferCM(143,pcv->windowPtr);
- pcv->btn10Hdl=TSReferCM(137,pcv->windowPtr);
- pcv->btn11Hdl=TSReferCM(138,pcv->windowPtr);
- pcv->btn12Hdl=TSReferCM(139,pcv->windowPtr);
-
- pcv->volHdl=TSReferCM(140,pcv->windowPtr);
- }
-
- /******************************************************************************
- * setWinSize(): ウィンドウの大きさを変更
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈:
- * ウィンドウ上でマウスの左ボタンが押された場合の処理を行う。
- * この処理でクローズボタンによる終了、ウィンドウの移動が可能となります。
- */
- void setWinSize(ComVal *pcv)
- {
- Rect txtrc = { 0, 0, WIN_H, WIN_V - 20 };
-
-
- pcv->win_h = pcv->fontS[pcv->font] * 48; /*ウィンドウサイズ */
- pcv->win_v = 20 + pcv->fontS[pcv->font] * 30;
-
- pcv->rcl.d.left = pcv->win_h - 67 - 2;
- pcv->rcl.d.top = pcv->win_v - 16 - 2;
- pcv->rcl.d.right = pcv->win_h - 67 + 5 * 6 + 2;
- pcv->rcl.d.bottom = pcv->win_v - 16 + 12 + 2;
-
- pcv->lxy.p.x = pcv->win_h - 67;
- pcv->lxy.p.y = pcv->win_v - 16;
-
- txtrc.d.right = pcv->win_h;
- txtrc.d.bottom = pcv->win_v - 20;
-
- pcv->view.d.left = pcv->fontS[pcv->font];
- pcv->view.d.top = 0;
- pcv->view.d.right = pcv->win_h;
- pcv->view.d.bottom = pcv->win_v - 19;
-
- pcv->rcl.d.left = pcv->win_h - 67 - 2;
- pcv->rcl.d.top = pcv->win_v - 16 - 2;
- pcv->rcl.d.right = pcv->win_h - 67 + 5 * 6 + 2;
- pcv->rcl.d.bottom = pcv->win_v - 16 + 12 + 2;
- pcv->lxy.p.x = pcv->win_h - 67;
- pcv->lxy.p.y = pcv->win_v - 16;
-
- GMAndRectRgn(pcv->txtRgnHdl, pcv->windowPtr->graph.clipping, &txtrc);
- GMCopyRgn(pcv->winRgnHdl, pcv->windowPtr->graph.clipping);
-
- CMMove(pcv->btn1Hdl ,LONGWORD( 0,pcv->win_v - 19));
- CMMove(pcv->btn2Hdl ,LONGWORD( 30,pcv->win_v - 19));
- CMMove(pcv->btn3Hdl ,LONGWORD( 60,pcv->win_v - 19));
- CMMove(pcv->btn4Hdl ,LONGWORD( 90,pcv->win_v - 19));
- CMMove(pcv->btn5Hdl ,LONGWORD( 120,pcv->win_v - 19));
- CMMove(pcv->btn6Hdl ,LONGWORD( 150,pcv->win_v - 19));
- CMMove(pcv->btn7Hdl ,LONGWORD( 180,pcv->win_v - 19));
- CMMove(pcv->btn8Hdl ,LONGWORD( 210,pcv->win_v - 19));
- CMMove(pcv->btn9Hdl ,LONGWORD( 240,pcv->win_v - 19));
- CMMove(pcv->btn92Hdl,LONGWORD( 270,pcv->win_v - 19));
- CMMove(pcv->btn93Hdl,LONGWORD( 300,pcv->win_v - 19));
- CMMove(pcv->btn10Hdl,LONGWORD( 330,pcv->win_v - 19));
- CMMove(pcv->btn11Hdl,LONGWORD( 360,pcv->win_v - 19));
-
- CMMove(pcv->btn12Hdl,LONGWORD( pcv->win_h - 29,pcv->win_v - 19));
- CMMove(pcv->volHdl ,LONGWORD( pcv->win_h - 178,pcv->win_v - 19));
-
- }
-
- /******************************************************************************
- * msLDownEvent(): マウスレフトダウンイベント処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈:
- * ウィンドウ上でマウスの左ボタンが押された場合の処理を行う。
- * この処理でクローズボタンによる終了、ウィンドウの移動が可能となります。
- */
- void msLDownEvent(ComVal *pcv)
- {
- int partCode; /* ウィンドウのパートコード */
- Window *wTemp; /* テンポラリウィンドウポインタ */
- Rect comRc = { 0, 0, 18, WIN_V - 20 }; /* コマンド領域 */
- Rect btnRc = { 0, 361, WIN_H, WIN_V }; /* ボタン領域 */
-
- comRc.d.right = pcv->fontS[pcv->font];
- comRc.d.bottom = pcv->win_v - 19;
-
- btnRc.d.top = pcv->win_v - 19;
- btnRc.d.right = pcv->win_h;
- btnRc.d.bottom = pcv->win_v;
-
- /* イベントが自分のウィンドウか? */
- if (pcv->event.ev.whom.win == pcv->windowPtr) {
- /* ウィンドウがインアクティブで、OPT.1キーが押されてないか? */
- if (!pcv->activeFlag && !(pcv->event.ev.how & KS_OPT1)) {
- /* ウィンドウをアクティブにする */
- WMSelect(pcv->windowPtr);
- /* ボタンが押された場所のパートコードを取得する */
- partCode = WMFind(pcv->event.ev.where.x_y, &wTemp);
- /* タイトルバー以外か、左ボタンが離されたか? */
- if (partCode != W_INDRAG || !EMLStill()) {
- return;
- }
- }
- /* マウスのボタンが押されている間、ウィンドウの各種処理をシス
- テムに任せて、ボタンが離された場所のパートコードを取得する */
- partCode = SXCallWindM(pcv->windowPtr, &pcv->event);
- if (partCode == W_INCLOSE) { /* クローズボタンか? */
- pcv->endFlag = TRUE; /* 終了フラグをセットする */
- pcv->saveFlag = 0;
- }
- if (partCode == W_ININSIDE) { /* ウィンドウの内側 */
- if (GMPtInRect(&pcv->view, EMMSLoc())) {
- if (EMRWait()) { /* 左右ボタンともに押されている*/
- retpastf(pcv);
- TSGetEvent(pcv->eventMask, &pcv->event);
- return;
- }
- pcv->scrollFlag = scrollTxt(pcv, 1);
- }
- if (GMPtInRect(&comRc, EMMSLoc())) { /* 'TYPE='解読 */
- nextfile(pcv);
- }
- if (GMPtInRect(&btnRc, EMMSLoc())) { /* control check */
- checkControl(pcv);
- }
- }
-
- }
- }
-
- /******************************************************************************
- * checkControl(): コントロールのチェック
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void checkControl(ComVal *pcv)
- {
- int partCode; /* コントロールのパートコード */
- int val; /* コントロールの値 */
- Control **ctrlHdl; /* コントロールハンドル */
- char str[16], execfname[90], command[90];
- int sclbuff;
- char *txtPt;
- int *txtNo;
- int i,rtn;
-
- /* マウスのボタンが押されている間、コントロールの各種処理をシステムに
- 任せて、コントロールハンドルとボタンが離された場所のパートコードを
- 取得する */
- partCode = SXCallCtrlM(pcv->windowPtr, &pcv->event, 0, 0, 0, &ctrlHdl);
-
- if (pcv->loadFlag == 0) /* テキストが未表示なら戻る */
- return;
-
- switch (partCode) {
- case C_INBTTN: /* 文字ボタン */
- /* ボタン1か(行頭処理)? */
- if (ctrlHdl == pcv->btn1Hdl && pcv->ofset != 0) {
- pcv->ofset = 0;
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- break;
- }
- /* ボタン2か(行末処理)? */
- if (ctrlHdl == pcv->btn2Hdl) {
- pcv->ofset = pcv->Maxline - 29;
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- break;
- }
- /* ボタン3か(前項処理)? */
- if (ctrlHdl == pcv->btn3Hdl && pcv->ofset > 0) {
- pcv->ofset = pcv->ofset - 29;
- if (pcv->ofset < 0)
- pcv->ofset =0;
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- break;
- }
- /* ボタン4か(次項処理)? */
- if (ctrlHdl == pcv->btn4Hdl && pcv->ofset < pcv->Maxline - 29) {
- pcv->ofset = pcv->ofset + 29;
- if (pcv->ofset + 29 > pcv->Maxline)
- pcv->ofset = pcv->Maxline - 29;
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- break;
- }
- /* ボタン5か(改区前処理)? */
- if (ctrlHdl == pcv->btn5Hdl) {
- MMHdlLock(pcv->txt);
- MMHdlLock(pcv->txtNo);
- txtPt = *(pcv->txt);
- txtNo = *(pcv->txtNo);
- for (i=pcv->ofset - 1;i>0;i--) {
- if (!strncmp("━", (txtPt + *(txtNo + i)), 2))
- break;
- }
- MMHdlUnlock(pcv->txtNo);
- MMHdlUnlock(pcv->txt);
- if (i<0)
- break;
- pcv->ofset = i;
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- break;
- }
- /* ボタン6か(改区後処理)? */
- if (ctrlHdl == pcv->btn6Hdl) {
- MMHdlLock(pcv->txt);
- MMHdlLock(pcv->txtNo);
- txtPt = *(pcv->txt);
- txtNo = *(pcv->txtNo);
- for (i=pcv->ofset + 1;i<pcv->Maxline;i++) {
- if (!strncmp("━", (txtPt + *(txtNo + i)), 2))
- break;
- }
- MMHdlUnlock(pcv->txtNo);
- MMHdlUnlock(pcv->txt);
- if (i>pcv->Maxline)
- break;
- if (i>pcv->Maxline - 29)
- i = pcv->Maxline - 29;
- pcv->ofset = i;
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- break;
- }
- /* ボタン7か(前行処理)? */
- if (ctrlHdl == pcv->btn7Hdl && pcv->ofset > 0) {
- sclbuff = pcv->scrollstep;
- pcv->scrollstep = 1;
- scrollTxt(pcv, -1);
- pcv->scrollstep = sclbuff;
- break;
- }
- /* ボタン8か(次行処理)? */
- if (ctrlHdl == pcv->btn8Hdl && pcv->ofset < pcv->Maxline - 29) {
- sclbuff = pcv->scrollstep;
- pcv->scrollstep = 1;
- scrollTxt(pcv, 1);
- pcv->scrollstep = sclbuff;
- break;
- }
- /* ボタン9か(検索処理)? */
- if (ctrlHdl == pcv->btn9Hdl) {
- if ((rtn = dialogProc5(pcv, 0)) >= 0) {
- pcv->ofset = pcv->ofset - 15;
-
- if (pcv->status + 29 > pcv->Maxline)
- pcv->ofset = pcv->Maxline - 29;
- else if (pcv->status < 15)
- pcv->ofset = 0;
-
- rtn = (rtn - pcv->ofset + 1) * pcv->fontS[pcv->font];
- drawGraph(pcv ,0);
- i = GMForeColor(G_RED);
- GMMove(LONGWORD(0, rtn));
- GMLine(LONGWORD(pcv->fontS[pcv->font] * 97, rtn));
- GMForeColor(i);
-
- CMShine(pcv->btn92Hdl,C_ACTIVE);
- CMShine(pcv->btn93Hdl,C_ACTIVE);
-
- }
- break;
- }
- /* ボタン92か(全域検索処理)? */
- if (ctrlHdl == pcv->btn92Hdl) {
- if ((rtn = dialogProc5(pcv, 1)) >= 0) {
- pcv->ofset = pcv->ofset - 15;
-
- if (pcv->status + 29 > pcv->Maxline)
- pcv->ofset = pcv->Maxline - 29;
- else if (pcv->status < 15)
- pcv->ofset = 0;
-
- rtn = (rtn - pcv->ofset + 1) * pcv->fontS[pcv->font];
- drawGraph(pcv ,0);
- i = GMForeColor(G_RED);
- GMMove(LONGWORD(0, rtn));
- GMLine(LONGWORD(pcv->fontS[pcv->font] * 97, rtn));
- GMForeColor(i);
- }
- break;
- }
- /* ボタン93か(次検索処理)? */
- if (ctrlHdl == pcv->btn93Hdl) {
- if ((rtn = dialogProc5(pcv, 2)) >= 0) {
- pcv->ofset = pcv->ofset - 15;
-
- if (pcv->status + 29 > pcv->Maxline)
- pcv->ofset = pcv->Maxline - 29;
- else if (pcv->status < 15)
- pcv->ofset = 0;
-
- rtn = (rtn - pcv->ofset + 1) * pcv->fontS[pcv->font];
- drawGraph(pcv ,0);
- i = GMForeColor(G_RED);
- GMMove(LONGWORD(0, rtn));
- GMLine(LONGWORD(pcv->fontS[pcv->font] * 97, rtn));
- GMForeColor(i);
- }
- break;
- }
- /* ボタン10か(演奏再開処理)? */
- if (ctrlHdl == pcv->btn10Hdl && pcv->mloadFlag) {
- if (pcv->mzTask != 0) {
- sprintf(command, " %s", pcv->mzOpt);
- pcv->mzTask = TSFockB(0, 0, pcv->mzFname, command, 0, execfname);
- sprintf(command, " %s", pcv->zmsfname);
- pcv->mzTask = TSFockB(0, 0, pcv->mzFname, command, 0, execfname);
- } else {
- exec_zms("(P)");
- }
- break;
- }
- /* ボタン11か(演奏停止処理)? */
- if (ctrlHdl == pcv->btn11Hdl && pcv->mloadFlag) {
- exec_zms("(S)");
- break;
- }
-
- /* ボタン12か(復帰処理)? */
- if (ctrlHdl == pcv->btn12Hdl) {
- retpastf(pcv);
- break;
- }
- case C_INTHUMB: /* スライドボリューム */
- if (ctrlHdl == pcv->volHdl) {
- pcv->ofset = CMValueGet(pcv->volHdl);
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- }
- break;
- }
- }
-
- /******************************************************************************
- * msRDownEvent(): マウスライトダウンイベント処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈:
- * ウィンドウ上でマウスの左ボタンが押された場合の処理を行う。
- * この処理でクローズボタンによる終了、ウィンドウの移動が可能となります。
- */
- void msRDownEvent(ComVal *pcv)
- {
- int partCode,mpos; /* ウィンドウのパートコード */
- Window *wTemp; /* テンポラリウィンドウポインタ */
-
- /* イベントが自分のウィンドウか? */
- if (pcv->event.ev.whom.win == pcv->windowPtr) {
- /* ウィンドウがインアクティブで、OPT.1キーが押されてないか? */
- if (!pcv->activeFlag && !(pcv->event.ev.how & KS_OPT1)) {
- return;
- }
- /* マウスのボタンが押されている間、ウィンドウの各種処理をシス
- テムに任せて、ボタンが離された場所のパートコードを取得する */
- partCode = SXCallWindM(pcv->windowPtr, &pcv->event);
- if (partCode == W_INDRAG) { /* ドラッグリージョン */
- selectMenu(pcv); /* メニューの作成と選択処理を行う */
- return;
- }
- if (partCode == W_ININSIDE) { /* ウィンドウの内側 */
- if (EMLWait()) { /* 左右ボタンともに押されている */
- retpastf(pcv);
- TSGetEvent(pcv->eventMask, &pcv->event);
- return;
- }
- if (GMPtInRect(&pcv->view, EMMSLoc())) /* 逆scroll */
- pcv->scrollFlag = scrollTxt(pcv, -1);
- }
- }
- }
-
- /******************************************************************************
- * selectMenu(): ポップアップメニューの作成と選択処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void selectMenu(ComVal *pcv)
- {
- int num;
- char buff[90], dirname[90];
-
- if (pcv->loadFlag)
- num = MNSelect( /* メニューの表示と選択を行う */
- pcv->menuHdl, /* メニューハン ドル */
- pcv->event.ev.where.x_y); /* マウスの右ボタンが押された位置 */
- else
- num = MNSelect( /* メニューの表示と選択を行う */
- pcv->menuHdl2, /* メニューハン ドル */
- pcv->event.ev.where.x_y); /* マウスの右ボタンが押された位置 */
-
- switch (num) {
- case 1: /* about me... */
- dialogProc1(pcv);
- break;
- case 2:
- break;
- case 3: /* ドライブパス設定 */
- dialogProc2(pcv);
- break;
- case 4: /* 表示諸設定 */
- dialogProc3(pcv);
- break;
- case 5: /* 起動プログラム設定 */
- dialogProc4(pcv);
- break;
- case 6:
- break;
- case 7: /* ディレクトリオープン */
- dirname[0] = sprintf(&dirname[1], "%s %s", pcv->currentFname, "-H");
- if (TSFockB(0, 0, "di.r", dirname, 0, buff) < 0)
- DMError(D_CONFIRM, "ディレクトリウィンドウの\r
- オープンに失敗しました!");
- break;
- case 8:
- break;
- case 9: /* 終了フラグをセットする */
- pcv->endFlag = TRUE;
- pcv->saveFlag = 0;
- break;
- }
- }
-
- /******************************************************************************
- * dialogProc1(): ダイアログの作成、表示 (about me)
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void dialogProc1(ComVal *pcv)
- {
- Dialog *dialogPtr;
- Graph *lastGraph;
-
- dialogPtr = TSReferDM(128,NULL,W_FRONT);
-
- lastGraph = GMGetGraph(); /* カレントグラフを退避する */
- /* ダイアログをカレントグラフにする */
- GMSetGraph(&dialogPtr->window.graph);
- GMAPage(G_ALLPAGE);
- GMFontKind(G_ROM12);
- GMFontFace(G_BOLD);
- GMShadowStrZ(" Version", LONGWORD( 21,63));
- GMShadowStrZ( *pcv->versHdl, LONGWORD(123,63));
- GMShadowStrZ("電脳倶楽部書類を表示します。", LONGWORD(30,80));
- GMShadowStrZ("F.Ogasawara 1997",LONGWORD(60,100));
- DMControl(NULL);
- DMDispose(dialogPtr); /* ダイアログを廃棄する */
- GMSetGraph(lastGraph); /* カレントグラフを元に戻す */
- }
-
- /******************************************************************************
- * IdleEvent(): アイドルイベント処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void IdleEvent(ComVal *pcv)
- {
- if (pcv->scrollFlag) {
- if (EMLBttn() || EMRBttn()) { /* マウスのボタンが押されているか? */
- /* イベントが自分のウィンドウか? */
- if (pcv->event.ev.whom.win == pcv->windowPtr)
- scrollTxt(pcv, pcv->scrollDir);
- } else {
- pcv->scrollFlag = FALSE; /* スクロールは終了した */
- }
- }
- setlnum(pcv);
- }
-
- /******************************************************************************
- * keyDownEvent(): キーダウンイベント処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈: OPT.1+'Q'キーでの終了処理を行う。
- */
- void keyDownEvent(ComVal *pcv)
- {
- int shortCut; /* ショートカットキー */
-
- if (pcv->event.ev.how & KS_OPT1) { /* OPT.1キーが押されたか? */
- /* キー入力した文字を大文字に変換する */
- shortCut = toupper((int) pcv->event.ev.whom.key.ascii);
- if (shortCut == 'Q') /* 終了か? */
- pcv->endFlag = TRUE; /* 終了フラグをセットする */
- }
- }
-
- /******************************************************************************
- * updateEvent(): アップデート処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈:
- * アップデート処理としてウィンドウ内部を描画する。
- * この処理を行わないと、自分より下のウィンドウのアップデートやアイドル
- * イベントの処理ができなくなります。
- */
- void updateEvent(ComVal *pcv)
- {
- /* イベントが自分のウィンドウか? */
- if (pcv->event.ev.whom.win == pcv->windowPtr) {
- WMUpdate(pcv->windowPtr); /* アップデートを開始する */
- drawGraph(pcv ,0); /* テキスト全体を書き替え */
- WMUpdtOver(pcv->windowPtr); /* アップデートを終了する */
- }
- }
-
- /******************************************************************************
- * drawGraph(): ウィンドウ内部の描画
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void drawGraph(ComVal *pcv, int sel)
- {
-
- GMSetGraph(&pcv->windowPtr->graph); /* 自分をカレントグラフにする */
- drawtxt(pcv, sel);
- GMFontKind(G_ROM12);
- GMFontSize(LONGWORD(12,12));
- CMValueSet(pcv->volHdl, pcv->ofset);
- if (pcv->mloadFlag == 0) { /* ZMSファイルロード済み? */
- CMShine(pcv->btn10Hdl, C_INACTIVE);
- CMShine(pcv->btn11Hdl, C_INACTIVE);
- }
- if (pcv->mojiFlag == 0) { /* 検索文字指定済み? */
- CMShine(pcv->btn92Hdl, C_INACTIVE);
- CMShine(pcv->btn93Hdl, C_INACTIVE);
- }
- if (pcv->pastFno == 0) /* 下層テキストロード済み? */
- CMShine(pcv->btn12Hdl, C_INACTIVE);
- CMDraw(pcv->windowPtr);
- if (pcv->loadFlag && pcv->lineDisp) { /* 行番号表示 */
- GMShadowRect(&pcv->rcl);
- setlnum(pcv);
- }
- }
-
- /******************************************************************************
- * setlnum(): 行番号表示
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void setlnum(ComVal *pcv)
- {
- Point mpos;
- int comline;
- char buff[10];
-
- if (!pcv->lineDisp || pcv->loadFlag == 0)
- return;
-
- GMSetGraph(&pcv->windowPtr->graph); /* 自分をカレントグラフにする */
- mpos.x_y = EMMSLoc();
- if (!pcv->activeFlag || mpos.p.x < 0 || mpos.p.x > pcv->win_h ||
- mpos.p.y < -20 || mpos.p.y > pcv->win_v)
- return;
-
- comline = pcv->ofset + (mpos.p.y / pcv->fontS[pcv->font]) + 1;
-
- if (mpos.p.y < 0) {
- strcpy(buff, "~BAR~");
- } else if (mpos.p.y > pcv->win_v - 20) {
- strcpy(buff, "_BAR_");
- } else {
- sprintf(buff, "%5d", comline);
- }
- GMFontKind(G_ROM12);
- GMFontSize(LONGWORD(12,12));
- GMMove(pcv->lxy.x_y);
- GMDrawStrZ(buff);
- }
-
- /******************************************************************************
- * activateEvent(): アクティベートイベント処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈: アクティブ、インアクティブによるアクティブフラグの切り替えと、
- * イベントマスクの切り替えを行う。
- */
- void activateEvent(ComVal *pcv)
- {
- /* イベントが自分のウィンドウか? */
- if (pcv->event.ev.whom.win == pcv->windowPtr) {
- pcv->activeFlag = TRUE; /* アクティブフラグをセットする */
- /* アクティブ時のイベントマスクをセットする */
- pcv->eventMask = EVENTMASK | EM_KEYDOWN;
- /* イベントが他のウィンドウで、自分がアクティブ状態か? */
- } else if (pcv->activeFlag) {
- pcv->activeFlag = FALSE; /* アクティブフラグをクリアする */
- /* インアクティブ時のイベントマスクをセットする */
- pcv->eventMask = EVENTMASK;
- }
- }
-
- /******************************************************************************
- * systemEvent(): システムイベント処理
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- * 注釈: 全ウィンドウのクローズ、全タスクの終了、ウィンドウのセレクトに
- * 対応した処理を行う。
- */
- void systemEvent(ComVal *pcv)
- {
- switch (pcv->event.ts.what2) { /* イベントの種類は? */
- case CLOSEALL: /* 全ウィンドウのクローズ */
- case ENDTSK: /* 全タスクの終了 */
- pcv->endFlag = TRUE; /* 終了フラグをセットする */
- pcv->saveFlag = 1;
- break;
- case WINDOWSELECT: /* ウィンドウのセレクト */
- WMSelect(pcv->windowPtr); /* ウィンドウをアクティブにする */
- break;
- case DRAGEND: /* ドラッグの終了 */
- /* イベントが自分のウィンドウか? */
- if (pcv->event.ev.whom.win == pcv->windowPtr) {
- /* ラバーバンドを消去する */
- TSHideDrag();
- /* アイコンのドロップ処理を行う */
- dropIcon(pcv);
- }
- break;
- }
- }
-
- /******************************************************************************
- * showErrDialog(): エラーダイアログの表示
- ******************************************************************************
- * 引数: ComVal *pcv 共通変数へのポインタ
- */
- void showErrDialog(ComVal *pcv)
- {
- int i;
-
- static struct { /* エラー情報 */
- int code; /* エラーコード */
- int manager; /* 使用するマネージャ */
- int flag; /* 表示フラッグ */
- char *message; /* エラーメッセージ */
- } errInfo[] = {
- { 1, 1, D_RED, "SX SYSTEMのバージョンが違います。" },
- { 2, 2, D_RED, "ウィンドウが作成できません。" },
- { 0, 1, D_YELLOW, "エラーが発生しました。" }
- };
-
- for (i = 0; errInfo[i].code != 0; i++) /* エラーコードを捜す */
- if (errInfo[i].code == pcv->errorCode)
- break;
- switch (errInfo[i].manager) { /* マネージャの選択 */
- case 1: /* ダイアログマン */
- DMError(errInfo[i].flag | D_CONFIRM, errInfo[i].message);
- break;
- case 2: /* タスクマン */
- TSErrDialogN(errInfo[i].flag | D_CONFIRM, errInfo[i].message);
- break;
- }
- }
-
- /******************************************************************************
- * endProc(): 終了手続き
- ******************************************************************************
- * 引数: int code 終了コード
- * ComVal *pcv 共通変数へのポインタ
- * 注釈: ハンドルの解放やウィンドウの廃棄と、プログラムの終了を行う。
- */
- void endProc(int code, ComVal *pcv)
- {
- int i,j;
-
- if (pcv->resOk) {
- /* 環境設定の保存 */
- **pcv->mzHdl = pcv->mzTask;
- **pcv->pcmHdl = pcv->pcmTask;
- **pcv->picHdl = pcv->picTask;
-
- **pcv->envHdl = pcv->scrollstep;
- *((*pcv->envHdl) + 1) = pcv->cutDisp;
- *((*pcv->envHdl) + 2) = pcv->lineDisp;
- *((*pcv->envHdl) + 3) = pcv->picOff;
- *((*pcv->envHdl) + 4) = pcv->font;
- *((*pcv->envHdl) + 5) = pcv->saveFlag;
-
- strcpy((*pcv->mzHdl) + 1, pcv->mzFname);
- strcpy((*pcv->mzHdl) + 91, pcv->mzOpt);
- strcpy((*pcv->pcmHdl) + 1, pcv->pcmFname);
- strcpy((*pcv->pcmHdl) + 91, pcv->pcmOpt);
- strcpy((*pcv->picHdl) + 1, pcv->picFname);
- strcpy((*pcv->picHdl) + 91, pcv->picOpt);
-
- *((*pcv->envHdl) + 6) = 0;
- for(i=0;i<11;i++) {
- *((*pcv->envHdl) + 7 + i) = 0;
- for(j=0;j<90;j++) {
- *((*pcv->stsHdl) + i * 90 + j) = 0;
- *((*pcv->cpthHdl) + i * 90 + j) = 0;
- }
- }
- for(i=0;i<180;i++)
- *((*pcv->dpthHdl) + i) = 0;
-
- if (pcv->saveFlag) {
- *((*pcv->envHdl) + 18) = pcv->ofset;
- *((*pcv->envHdl) + 6) = pcv->pastFno;
- strcpy(*pcv->dpthHdl, pcv->a_drv);
- strcpy(*pcv->dpthHdl + 90, pcv->b_drv);
- strcpy(*pcv->dpthHdl + 180, pcv->c_drv);
- strcpy(*pcv->dpthHdl + 270, pcv->title);
- if (pcv->pastFno > 0) {
- strcpy(*pcv->stsHdl, pcv->currentFname);
- strcpy(*pcv->cpthHdl, pcv->currentPath);
- for(i=0;i<pcv->pastFno;i++) {
- *((*pcv->envHdl) + 7 + i) = pcv->pastofset[i];
- strcpy((*pcv->stsHdl) + (i + 1) * 90, &pcv->pastFname[i][0]);
- strcpy((*pcv->cpthHdl) + (i + 1) * 90, &pcv->pastPath[i][0]);
- }
- }
- }
-
- *((*pcv->env2Hdl) ) = pcv->set_as_a;
- *((*pcv->env2Hdl) + 1) = pcv->fore_color;
- *((*pcv->env2Hdl) + 2) = pcv->back_color;
- *((*pcv->env2Hdl) + 3) = pcv->fcache_c;
-
- TSResSave(pcv->lbFname);
- }
-
- if (pcv->menuHdl != NULL)
- MMHdlDispose(pcv->menuHdl); /* メニューハンドルを解放する */
- if (pcv->menuHdl2 != NULL)
- MMHdlDispose(pcv->menuHdl2); /* メニューハンドルを解放する */
-
- if (pcv->hResMap != NULL)
- TSResRemove(); /* リソースマップハンドル */
-
- if (pcv->txt != NULL)
- MMHdlDispose(pcv->txt); /* テキスト領域のハンドル */
-
- if (pcv->txtNo != NULL)
- MMHdlDispose(pcv->txtNo); /* 改行情報のハンドル */
-
- for(i=0;i<MAX_DEPTH;i++) { /* ファイルキャッシュのハンドル */
- if (pcv->txt_cache[i] != NULL)
- MMHdlDispose(pcv->txt_cache);
- if (pcv->txtNo_cache[i] != NULL)
- MMHdlDispose(pcv->txtNo_cache);
- }
-
- for(i=pcv->depth;i>0;i--) /* カットファイルキャッシュ解放 */
- dispoBits(pcv);
-
- if (pcv->updateRgnHdl != NULL)
- GMDisposeRgn(pcv->updateRgnHdl); /* アップデートリージョン
- ハンドルの解放 */
-
- if (pcv->txtRgnHdl != NULL)
- GMDisposeRgn(pcv->txtRgnHdl); /* テキスト描画リージョン */
-
- if (pcv->winRgnHdl != NULL)
- GMDisposeRgn(pcv->winRgnHdl); /* ウィンドウリージョン */
-
- dispoBits(pcv);
-
- /* ウィンドウポインタが確保されたままか? */
- if (pcv->windowPtr != NULL)
- CMKill(pcv->windowPtr); /* すべてのコントロールを廃棄する */
- WMDispose(pcv->windowPtr); /* ウィンドウを廃棄する */
-
- exit(code); /* プログラムを終了する */
- }
- STR@ 慢 EdEV 3.00 <